home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-09-17 | 4.7 KB | 160 lines | [TEXT/MPS ] |
- //========================================================================================
- //
- // File: FWCyStrm.cpp
- // Release Version: $ ODF 2 $
- //
- // Copyright: (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
- //
- // Cyberdog Stream Utilities
- //
- //========================================================================================
-
- #ifndef FWFRAMEW_HPP
- #include "FWFrameW.hpp"
- #endif
-
- #ifndef FWCYSTRM_H
- #include "FWCyStrm.h"
- #endif
-
- #ifndef FWSTRMRW_H
- #include "FWStrmRW.h"
- #endif
-
- #ifndef FWSOMENV_H
- #include "FWSOMEnv.h"
- #endif
-
- // template definition for FW_TSOMPtr<TRep>
- #include "FWSOMPtr.tpp"
-
- //
- // Cyberdog
- //
-
- #ifndef SOM_CyberStream_xh
- #include <CyberStream.xh>
- #endif
-
- #ifndef SOM_CyberItem_xh
- #include <CyberItem.xh>
- #endif
-
- #ifndef SOM_CyberSession_xh
- #include <CyberSession.xh>
- #endif
-
- //========================================================================================
- // Class FW_CCyberStream
- //========================================================================================
- #pragma mark Class FW_CCyberStream
-
- //----------------------------------------------------------------------------------------
- // FW_CCyberStream Globals
- //----------------------------------------------------------------------------------------
-
- const short FW_kCyberStreamDone = (kCDErrorOccurred | kCDDownloadComplete | kCDAbortComplete);
-
- //----------------------------------------------------------------------------------------
- // FW_CCyberStream Runtime Information
- //----------------------------------------------------------------------------------------
-
- FW_DEFINE_AUTO (FW_CCyberStream)
-
- //----------------------------------------------------------------------------------------
- // FW_CCyberStream::Assign
- //----------------------------------------------------------------------------------------
-
- void FW_CCyberStream::Assign (CyberStream* cs)
- {
- FW_SOMEnvironment ev;
-
- if (fStream) {
- // Is it deletable or must it be aborted?
- short status = fStream->GetStreamStatus(ev);
- if (!(status & FW_kCyberStreamDone)) {
- fStream->Abort (ev);
- do {
- ::SystemTask();
- status = fStream->GetStreamStatus(ev);
- }
- while (!(status & FW_kCyberStreamDone));
- }
- delete fStream;
- }
-
- fStream = cs;
- }
-
- //========================================================================================
- // Class FW_CCyberBuffer
- //========================================================================================
- #pragma mark Class FW_CCyberBuffer
-
- //----------------------------------------------------------------------------------------
- // FW_CCyberBuffer Runtime Information
- //----------------------------------------------------------------------------------------
-
- FW_DEFINE_AUTO (FW_CCyberBuffer)
-
- //----------------------------------------------------------------------------------------
- // FW_CCyberBuffer::FW_CCyberBuffer
- //----------------------------------------------------------------------------------------
-
- FW_CCyberBuffer::FW_CCyberBuffer (Environment* ev, CyberStream* cs)
- : fStream (cs)
- {
- FW_ASSERT (cs);
- cs->GetBuffer (ev, &fBuffer, &fSize);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CCyberBuffer::~FW_CCyberBuffer
- //----------------------------------------------------------------------------------------
-
- FW_CCyberBuffer::~FW_CCyberBuffer ()
- {
- FW_SOMEnvironment ev;
-
- fStream->ReleaseBuffer (ev, fBuffer);
- }
-
- //========================================================================================
- // Class FW_PCyberSink
- //========================================================================================
- #pragma mark Class FW_PCyberSink
-
- //----------------------------------------------------------------------------------------
- // FW_PCyberSink RunTime Info
- //----------------------------------------------------------------------------------------
-
- FW_DEFINE_AUTO_TEMPLATE(FW_TSOMPtr, FW_OCyberSink)
-
- #if FW_USE_TEMPLATE_PRAGMAS
- #pragma template_access public
- #pragma template FW_TSOMPtr<FW_OCyberSink>
- #endif
-
- #if FW_ANSI_TEMPLATE_INSTANTIATION
- template class FW_TSOMPtr<FW_OCyberSink>;
- #endif
-
- //----------------------------------------------------------------------------------------
- // FW_PCyberSink::FW_PCyberSink
- //----------------------------------------------------------------------------------------
-
- FW_PCyberSink::FW_PCyberSink (Environment* ev, CyberStream* cs)
- : FW_TSOMPtr<FW_OCyberSink> (ev, new FW_OCyberSink)
- {
- GetRep()->InitFromStream (ev, cs);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_PCyberSink::~FW_PCyberSink
- //----------------------------------------------------------------------------------------
-
- FW_PCyberSink::~FW_PCyberSink ()
- {
- }
-
-